/*
Xgo implements a subset of a the Go type parametrized declarations proposal
(xGo).  It renders xGo source to standard Go source.  The input can come from a
file named in a command line argument.  If no non-opt args are given, xgo reads
stdin.

Xgo is intended for evaluation of the draft only, it is limited.  The minor
annoyance is that xgo strips all comments from the input (no cgo, sorry) and
"normalizes" string constants.  A bigger issue is - it can properly process
only single files because it doesn't really handle things imported from other
packages. The xgo declarations also can't span even a single multi-file
package. In the same time it is assumed to be enough to try out simple, toy
programs to get the hands-on experience with the look & feel of type
parametrized declaration per the xgo draft.

Error detection in xgo is limited in a similar way as in gofmt, some
undeclared/redeclared errors are ignored and left to be reported by the
compiler. Xgo rules enforcing and reporting is also minimalistic and
incomplete.

Xgo is not a production software, it has a temporary lifetime expectancy and
there is probably no good reason to make it better polished. It will hopefully
not format your hard drive, at least not by design, but it may eat all of yours
box memory when it e.g. fails to properly detect an expansion cycle.

Usage:
	xgo [-o output-fname] [-nofmt] [input-fname]
Options:
	-o file		write to 'file' instead of stdout
	-nofmt		disable gofmt'ing of the output

*/
package documentation
